Skip to content

Feat/runtime bridge#2

Open
CarbonGerritBot wants to merge 14 commits intomainfrom
feat/runtime-bridge
Open

Feat/runtime bridge#2
CarbonGerritBot wants to merge 14 commits intomainfrom
feat/runtime-bridge

Conversation

@CarbonGerritBot
Copy link

No description provided.

Ra's al Ghul and others added 10 commits March 6, 2026 17:00
…rallel agents + synthesizer

- Set default teamSize=4
- Add synthesizer role (agent-4) that outputs structured JSON {final, reasoning, sources}
- Update roleFor/modelFor/synth detection to use agent-4 for synthesis
- Enhance synthesizeDeterministic to parse JSON from synthesizer when present
- Update docs and plugin config
- Use subagent runtime parallelism via existing Promise.all fan-out

Closes braintrust-json-agents task.
@imrasalghul imrasalghul force-pushed the feat/runtime-bridge branch from 0ebeddf to bf7d299 Compare March 6, 2026 17:00
@imrasalghul
Copy link

@codex

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f04449a124

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

function configuredModelFor(role: WorkerRole, settings: BraintrustSettings): string {
if (role === "critic") return settings.criticModel;
if (role === "researcher") return settings.researcherModel;
if (role === "synthesizer") return settings.synthModel;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Route synthesizer to active chat model, not persisted synthModel

The new settings contract marks synthModel as deprecated and says synthesis should inherit the active chat model, but this branch still returns settings.synthModel for the synthesizer role. In environments upgrading from older state/config (where synthModel is populated, e.g. opus), the synthesizer will keep using that stale model instead of the active runtime model, which can silently change provider behavior/cost and contradict the documented routing semantics.

Useful? React with 👍 / 👎.

Comment on lines +46 to +50
this.state.settingsOverrides = {
teamSize: initialSettings.teamSize,
strategy: initialSettings.strategy,
model: initialSettings.model,
criticModel: initialSettings.criticModel,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Stop freezing plugin settings in persisted overrides

On first run, this constructor copies every initial config value into state.settingsOverrides; later, mergeSettings applies those overrides on top of current plugin config, so edits to configured team size/models/quorum are ignored as long as .braintrust/state.json exists. This makes runtime behavior diverge from declared config after the first launch and forces manual state deletion to apply config changes.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants